#!/bin/bash

# 声明采用UTF-8编码
export LANG="en_US.UTF-8"

# read config.ini
while IFS='=' read -r key value; do
    if [[ $key = "src_dir" ]]; then
        src_dir=$value
    elif [[ $key = "go_dir" ]]; then
        go_dir=$value
    elif [[ $key = "protoMapPath" ]]; then
        protoMapPath=$value
    elif [[ $key = "csharp_dir" ]]; then
        csharp_dir=$value
    elif [[ $key = "include_dir" ]]; then
        include_dir=$value
    elif [[ $key = "src_grpc_dir" ]]; then
        src_grpc_dir=$value
    fi
done < config.ini

echo "dir: $src_dir gofile: $protoMapPath"

# 生成protomap
genprotomap -dir $src_dir -gofile $protoMapPath -cfile $csharp_dir

BASEDIR=$(dirname "$0")
PROTOC=$BASEDIR/linktools/lib/protoc
PROTOGOGEN=$BASEDIR/linktools/lib/protoc-gen-gogofaster

echo "src_grpc_dir: $src_grpc_dir"
$PROTOC --proto_path="$src_grpc_dir" --plugin=protoc-gen-go=$PROTOGOGEN --go_out="plugins=grpc:$go_dir" $src_grpc_dir*.proto

if [ -z "$src_dir" ]; then
	echo "没有配置源文件目录"
	read -p "Press any key to continue..." -n1 -s
	exit
fi

# 如果有参数，则只操作参数中的proto文件
if [ -n "$1" ]; then
	file=$1
	:done
else
	# 遍历当前目录下所有 bat 文件，操作该文件名对应的proto
	src_dir_files=$src_dir*.proto
	echo "$src_dir*.proto"

	for file in $src_dir/*.proto; do
		file=$(basename "$file" .proto)
		isdo=1
		:done
	done
fi

:done
# 生成不同语言的proto文件，根据是否配置目标目录
echo "Exec $src_dir$file.proto"

if [ -n "$go_dir" ]; then
	echo "To Go"
	$PROTOC --proto_path="$src_dir:$include_dir" --plugin=protoc-gen-go=$PROTOGOGEN --go_out="Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types:$go_dir" --go_opt="paths=source_relative" $src_dir$file.proto
fi

if [ -n "$csharp_dir" ]; then
	echo "To C#"
	$PROTOC --proto_path="$src_dir:$include_dir" --csharp_out=$csharp_dir $src_dir$file.proto
fi
